SOURCE CODE OF ADVANCED ARITHMETIC CALCULATOR PROGRAM

Advanced Arithmetic Calculator

Copyright (C) 2012 - Renato Alexandre Santos Freitas

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for mor details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>
In the stdafx.h's file:

#pragma once

#include "targetver.h"

#include <stdio.h>
#include <tchar.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <cstdlib>
#define _USE_MATH_DEFINES
#include <math.h>
#define DIM 2000
double initialProcessor(char arithTrig[DIM],double result);
double arithSolver(char trigon1[DIM],double result);
double pot(double base,double exponent,int sig);
double re(double dividend,double divider);

In the Advanced Aritmetic Calculator.cpp's file:

#include "stdafx.h"

void main(){
	system("title Advanced Arithmetic Calculator v1.3");
	system("color 73");
	system("MODE con cols=70 lines=7");
	int continu=1;
	double result1=0,result=0;
	char pause[100]="",arith[DIM]="";;
	do{
	flushall();
	system("cls");
	printf("Enter arithmetic data:\n");
	gets(arith);
	result=initialProcessor(arith,result1);
	printf("=%G\n\n",result);
	result1=result;
	printf("Press \"Enter\" key to continue...\n"); 
	gets(pause);
	}
		while(continu==1);
}

double initialProcessor(char arithTrig[DIM],double result){
	char arTrig[DIM]="",trigon[DIM]="",trig[DIM]="",paRect[DIM]="",cN[DIM]="",ex[DIM]="",art[DIM]="";
	int sig[DIM],s=0,rectPar=0,h=0,i=0,rePar=0,so=0,j=0,g=0,count=0,e=0,d=0,th=0,f=0,trigo=1,trigono=0,co=0,k=0,l=0,tr=0,pa=0,paren=1,pare=0,tg=0,p=0,a=0,c=1;
	double triArith[DIM],exp=1,result1,amplitude=1;
	for(s=0;s<DIM;s++){
		triArith[s]=0;
		sig[s]=-1;
	}
	for(i=0;arithTrig[i]!='\0';i++){
		if(arithTrig[i]=='x'){
				arithTrig[i]='*';
		}
			if(arithTrig[i]=='['||arithTrig[i]=='{'){
				arithTrig[i]='(';
			}
			if(arithTrig[i]==']'||arithTrig[i]=='}'){
				arithTrig[i]=')';
			}
			if(arithTrig[i]=='^'&&arithTrig[i+1]=='-'){
			arithTrig[i+1]='_';
			}
			if(arithTrig[i]=='E'&&arithTrig[i+1]=='_'){
			arithTrig[i+1]='-';
			}
			if((arithTrig[i]=='B'||arithTrig[i]=='O'||arithTrig[i]=='H')&&arithTrig[i+1]=='_'){
				arithTrig[i+1]='-';
			}
			}
	arithTrig[i]='+';arithTrig[i+1]='(';arithTrig[i+2]='0';arithTrig[i+3]=')';arithTrig[i+4]='\0';
	char paTrig[DIM]="";
	for(s=0;arithTrig[s]!='\0';s++){
		paTrig[s]=arithTrig[s];
	}
	paTrig[s]='\0';

	s=0;
	for(s;paTrig[s]!='\0';s++){
		if(paTrig[s]==')'&&paTrig[s+1]=='('){
			s++;
			arithTrig[s]='*';
			for(s;paTrig[s]!='\0';s++){
				arithTrig[s+1]=paTrig[s];
	}
			arithTrig[s+1]='\0';
			s=0;
			for(s=0;arithTrig[s]!='\0';s++){
		paTrig[s]=arithTrig[s];
	}
	paTrig[s]='\0';
	s=0;
		}
	}

	s=0;
	for(s;paTrig[s]!='\0';s++){
		if((paTrig[s]=='1'||paTrig[s]=='2'||paTrig[s]=='3'||paTrig[s]=='4'||paTrig[s]=='5'||paTrig[s]=='6'||paTrig[s]=='7'||paTrig[s]=='8'||paTrig[s]=='9'||paTrig[s]=='0'||paTrig[s]=='i'&&paTrig[s+1]!='e'||paTrig[s]=='e'&&paTrig[s-1]!='r'&&paTrig[s-1]!='s'&&paTrig[s-1]!='i'&&paTrig[s+2]!='t'||paTrig[s]==')')&&(paTrig[s+1]=='('||paTrig[s+1]=='a'||paTrig[s+1]=='s'||paTrig[s+1]=='c'||paTrig[s+1]=='t'||paTrig[s+1]=='l'||paTrig[s+1]=='p'||paTrig[s+1]=='e'||paTrig[s+1]=='r'||paTrig[s+1]=='d'||paTrig[s+1]=='q'||paTrig[s+1]=='g'&&paTrig[s-1]!='d')){
			s++;
			arithTrig[s]='*';
			for(s;paTrig[s]!='\0';s++){
				arithTrig[s+1]=paTrig[s];
	}
			arithTrig[s+1]='\0';
			s=0;
			for(s=0;arithTrig[s]!='\0';s++){
		paTrig[s]=arithTrig[s];
	}
	paTrig[s]='\0';
	s=0;
		}
	}

	s=0;
	for(s;paTrig[s]!='\0';s++){
		if((paTrig[s]=='1'||paTrig[s]=='2'||paTrig[s]=='3'||paTrig[s]=='4'||paTrig[s]=='5'||paTrig[s]=='6'||paTrig[s]=='7'||paTrig[s]=='8'||paTrig[s]=='9'||paTrig[s]=='0'||paTrig[s]=='p'||paTrig[s]=='e')&&(paTrig[s-1]==')')){
			arithTrig[s]='*';
			for(s;paTrig[s]!='\0';s++){
				arithTrig[s+1]=paTrig[s];
	}
			arithTrig[s+1]='\0';
			s=0;
			for(s=0;arithTrig[s]!='\0';s++){
		paTrig[s]=arithTrig[s];
	}
	paTrig[s]='\0';
	s=0;
		}
	}
	
	s=0;
	for(s;paTrig[s]!='\0';s++){
		if((paTrig[s+1]=='1'||paTrig[s+1]=='2'||paTrig[s+1]=='3'||paTrig[s+1]=='4'||paTrig[s+1]=='5'||paTrig[s+1]=='6'||paTrig[s+1]=='7'||paTrig[s+1]=='8'||paTrig[s+1]=='9'||paTrig[s+1]=='0'||paTrig[s+1]=='p'||paTrig[s+1]=='e')&&(paTrig[s]=='i'&&paTrig[s+1]!='e'||paTrig[s]=='e'&&paTrig[s-1]!='i')){
			s++;
			arithTrig[s]='*';
			for(s;paTrig[s]!='\0';s++){
				arithTrig[s+1]=paTrig[s];
	}
			arithTrig[s+1]='\0';
			s=0;
			for(s=0;arithTrig[s]!='\0';s++){
		paTrig[s]=arithTrig[s];
	}
	paTrig[s]='\0';
	s=0;
		}
	}

	s=0;
	for(s;paTrig[s]!='\0';s++){
		if(paTrig[s]=='_'&&(paTrig[s+1]=='('||paTrig[s+1]=='r'&&paTrig[s+2]=='e'&&paTrig[s+3]=='s')){
			arithTrig[s+1]='1';arithTrig[s+2]='*';s++;
			for(s;paTrig[s]!='\0';s++){
				arithTrig[s+2]=paTrig[s];
	}
			arithTrig[s+2]='\0';
			s=0;
			for(s=0;arithTrig[s]!='\0';s++){
		paTrig[s]=arithTrig[s];
	}
	paTrig[s]='\0';
	s=0;
		}
	}

	s=0;
	for(s;paTrig[s]!='\0';s++){
		if((paTrig[s-2]=='r'&&paTrig[s-1]=='e'&&paTrig[s]=='s'&&paTrig[s+2]!='(')&&(paTrig[s+1]!='+'&&paTrig[s+1]!='-'&&paTrig[s+1]!='*'&&paTrig[s+1]!='/'&&paTrig[s+1]!='^'&&paTrig[s+1]!=')'&&paTrig[s+1]!='b')){
			s++;
			arithTrig[s]='*';
			for(s;paTrig[s]!='\0';s++){
				arithTrig[s+1]=paTrig[s];
	}
			arithTrig[s+1]='\0';
			s=0;
			for(s=0;arithTrig[s]!='\0';s++){
		paTrig[s]=arithTrig[s];
	}
	paTrig[s]='\0';
	s=0;
		}
	}

	s=0;
	for(s;paTrig[s]!='\0';s++){
		if((paTrig[s]=='e'||paTrig[s-1]=='p'&&paTrig[s]=='i')&&(paTrig[s+1]=='p'&&paTrig[s+2]=='i'||paTrig[s+1]=='e')){
			s++;
			arithTrig[s]='*';
			for(s;paTrig[s]!='\0';s++){
				arithTrig[s+1]=paTrig[s];
	}
			arithTrig[s+1]='\0';
			s=0;
			for(s=0;arithTrig[s]!='\0';s++){
		paTrig[s]=arithTrig[s];
	}
	paTrig[s]='\0';
	s=0;
		}
	}

	s=0;
	for(s;paTrig[s]!='\0';s++){
		if(paTrig[s+1]=='_'&&paTrig[s]!='+'&&paTrig[s]!='-'&&paTrig[s]!='*'&&paTrig[s]!='/'&&paTrig[s]!='^'&&paTrig[s]!='('){
			s++;
			arithTrig[s]='*';
			for(s;paTrig[s]!='\0';s++){
				arithTrig[s+1]=paTrig[s];
	}
			arithTrig[s+1]='\0';
			s=0;
			for(s=0;arithTrig[s]!='\0';s++){
		paTrig[s]=arithTrig[s];
	}
	paTrig[s]='\0';
	s=0;
		}
	}

	int cp=0,mark=0;
	c=0;d=0;k=0;l=0;h=0;
	int parent[DIM];
	for(s=0;arithTrig[s]!='\0';s++){
		if(arithTrig[s]=='('){
			d=0;
			c++;
			parent[s]=c;
			d=1;
			k=c;
		}
		else{
		if(arithTrig[s]==')'){
			d=0;
			h=0;
			l=2;
			do{
				l=0;
				h=0;
				while(h<strlen(arithTrig)){
				if(parent[h]==k){
					l++;
			}
				if(l==2){
					l=0;
					k--;
				}
				h++;
				}

			}
			while(l==2);
			h=0;
			while(l!=1){
				h=0;
				l=0;
				while(h<strlen(arithTrig)){
					if(parent[h]==k){
					l++;
				}
					if(l==2){
						k--;
						h=0;
						l=0;
					}
					h++;
				}
			}
			parent[s]=k;
	}
		else{
			parent[s]=0;
		}
		}
	}

	int curPar=0,cur=0;
	for(i=0;arithTrig[i]!='\0';i++){
		if(arithTrig[i]=='('||arithTrig[i]==')'){
			curPar=1;
		}
	}
	if (curPar==0){
		result1=arithSolver(arithTrig,result);
		return result1;
	}
	a=0;
	int de=0,b=0,ju=0;
	c=0;
	char pas[DIM]="";
	int se=0;
	int thj=0;
	if(curPar==1){
		for(i=0;i<strlen(arithTrig);i++){
			int jk=0;
			char op[DIM]="";
			while(parent[i]<1){
				if(arithTrig[i]=='_'&&(arithTrig[i+1]=='g'||arithTrig[i+1]=='s'||arithTrig[i+1]=='c'||arithTrig[i+1]=='t'||arithTrig[i+1]=='a'||arithTrig[i+1]=='l'||arithTrig[i+1]=='d'||arithTrig[i+1]=='r')||arithTrig[i]=='q'||arithTrig[i]=='s'||arithTrig[i]=='c'||arithTrig[i]=='t'||arithTrig[i]=='a'||arithTrig[i]=='r'&&(arithTrig[i+3]=='t'&&arithTrig[i+4]!='g'&&arithTrig[i+4]!='a'||arithTrig[i+1]=='a'&&arithTrig[i+2]=='d')||arithTrig[i]=='d'||arithTrig[i]=='l'||arithTrig[i]=='g'){
					if(arithTrig[i]=='_'){
					thj=1;
					}
				if(arithTrig[i-1]=='1'||arithTrig[i-1]=='2'||arithTrig[i-1]=='3'||arithTrig[i-1]=='4'||arithTrig[i-1]=='5'||arithTrig[i-1]=='6'||arithTrig[i-1]=='7'||arithTrig[i-1]=='8'||arithTrig[i-1]=='9'||arithTrig[i-1]=='0'||arithTrig[i-1]=='i'||arithTrig[i-1]=='e'||arithTrig[i-1]==')'){
				jk=1;
				}ju=0;
				while(arithTrig[i]!='('){
					if(arithTrig[i]=='b'){
						op[ju]=arithTrig[i];
						ju++;i++;
						while(arithTrig[i]!='b'){
							op[ju]=arithTrig[i];
							ju++;i++;
						}
					}
				op[ju]=arithTrig[i];
				ju++;i++;
				}
				op[ju]='\0';
				}
				else{
				a=0;if(arithTrig[i]=='_'&&arithTrig[i+1]!='s'&&arithTrig[i+1]!='c'&&arithTrig[i+1]!='t'&&arithTrig[i+1]!='a'&&arithTrig[i+1]!='l'&&arithTrig[i+1]!='d'&&arithTrig[i+1]!='r'&&arithTrig[i+1]!='g'){
				pas[a]=arithTrig[i];a++;i++;
				}
				while(arithTrig[i]!='+'&&arithTrig[i]!='-'&&arithTrig[i]!='*'&&arithTrig[i]!='/'&&arithTrig[i]!='^'){
					pas[a]=arithTrig[i];
			a++;
				i++;	
				if(arithTrig[i]=='-'&&arithTrig[i-1]=='E'||arithTrig[i]=='-'&&arithTrig[i-1]=='O'||arithTrig[i]=='-'&&arithTrig[i-1]=='B'||arithTrig[i]=='-'&&arithTrig[i-1]=='H'){
					pas[a]=arithTrig[i];
				a++;
				i++;
				}
			}
				}

				pas[a]='\0';
				if(jk==1){arTrig[c]='*';
				}
				if(arithTrig[i]=='+'||arithTrig[i]=='-'||arithTrig[i]=='*'||arithTrig[i]=='/'||arithTrig[i]=='^'){
			arTrig[c]=arithTrig[i];c++;
				}
			if(strlen(pas)>0){
			triArith[b]=arithSolver(pas,result);
			pas[0]='\0';
			b++;
			}
				i++;
				if(strlen(op)>0){
					i--;
				}
			}
			pas[a]='\0';
			cur=parent[i];
				j=i;
			
			if(parent[i]==cur){
				i=j;
				a=0;
				i++;
				while(parent[i]!=cur){
				pas[a]=arithTrig[i];
				a++;i++;
				}
				pas[a]='\0';
				int kl=0;
				for(de=0;pas[de]!='\0';de++){
					if(pas[de]=='('||pas[de]==')'){
						kl=1;
					}
				}
				a=0;
				if(kl==0){
				triArith[b]=arithSolver(pas,result);
				sig[b]=1;
				pas[0]='\0';
				
				}
				if(kl==1){
				triArith[b]=initialProcessor(pas,result);
				sig[b]=1;
				char pas[DIM]="";
				
				ju=0;
				}
				
	b++;
			}
			
		
		}
		arTrig[c]='=';
	}
	a=0;
	int fr;
	so=0;
	int ca=0;
	double asdf=0;
	for(so=0;so<c;so++){
		int sa=so;	
		int b=0;
		if(arTrig[so]=='^'&&arTrig[so+1]=='^'){
		while(arTrig[so]=='^'&&a!=1){
			if(arTrig[so+1]!='^'&&arTrig[so-1]=='^'&&a!=2){
				asdf=triArith[so+1];
				if(sig[so]==-1){
				if(triArith[so]<0){
				sig[so]=0;
				}else{sig[so]=1;}
				}
				asdf=pot(triArith[so],asdf,sig[so]);
				triArith[so+1]=0;
				triArith[so]=0;
				arTrig[so]='+';
				so--;
				a=2;
			}
			else{
				if(arTrig[so+1]=='^'&&a==0){
					so++;
					fr=so;
				}else{
					if(a==2){
						while(a!=1){
							if(sig[so]==-1){
							if(triArith[so]<0){
				sig[so]=0;
				}else{sig[so]=1;}
							}
				asdf=pot(triArith[so],asdf,sig[so]);
				triArith[so]=0;
				arTrig[so]='+';
				so--;
				
		if(arTrig[so]!='^'){
		a=1;
		so=fr++;
		}
					}
				}
			}
			
			
	} 
		if(a==1){
			triArith[sa]=asdf;a=0;
		}
		
			}
		}else{if(arTrig[so]=='^'&&arTrig[so+1]!='^'){
			while(arTrig[so]=='^'){
				if(sig[sa]==-1){
				if(triArith[sa]<0){
				sig[sa]=0;
				}else{sig[sa]=1;}
				}
				triArith[sa]=pot(triArith[sa],triArith[so+1],sig[sa]);
			triArith[so+1]=0;
			arTrig[so]='+';
			so++;
			} }
		}
		
	}
			for(so=0;so<c;so++){
			int sa=so;			
		while(arTrig[so]=='*'){
			triArith[sa]=triArith[sa]*triArith[so+1];
			triArith[so+1]=0;
			arTrig[so]='+';
			so++;
	}
		while(arTrig[so]=='/'){
			triArith[sa]=triArith[sa]/triArith[so+1];
			triArith[so+1]=0;
			arTrig[so]='+';
			so++;
	}
			}
			char func[DIM]="";
			int lo=0;

	for(j=0;j<c;j++){
		 if(j==0){
			result1=triArith[0];
		 }
		 if(arTrig[j]=='^'){
		result1=pow(result1,triArith[j+1]);
	}
		 if(arTrig[j]=='*'){
		result1=result1*triArith[j+1];
		}
		if(arTrig[j]=='/'){
			result1=result1/triArith[j+1];
		}
		 if(arTrig[j]=='-'){
		result1=result1-triArith[j+1];
		}
		if(arTrig[j]=='+'){
			result1=result1+triArith[j+1];
		}
	}
	
			return result1;
		}

double arithSolver(char trigon1[DIM],double result){
		int i=0,j=0,e=0,f=0,h=0,so=0,sa=0,n=0,c=0,sig[DIM],sign=0,s=0;
		char number2[DIM]="",ex[DIM]="",trigon[DIM]="",amp[DIM]="";
		double exp=1,ampl[DIM],result1=0;
		char *pointer;
		for(i=0;trigon1[i]!='\0';i++){
		}
		if(trigon1[i-1]!='='){
			trigon1[i]='=';trigon1[i+1]='\0';
		}
		for(i=0;trigon1[i]!='\0';i++){
		if(trigon1[i]=='['||trigon1[i]==']'){
			c=i;
			while(trigon1[i]!='\0'){
				trigon1[i]=trigon1[i+1];
				i++;
		}
			i=c;
		}
		}
		int si=0;
		j=0;
		for(i=0;i<trigon1[i]!='\0';i++){
			if(trigon1[i]=='E'&&trigon1[i+1]=='-'||trigon1[i]=='B'&&trigon1[i+1]=='-'||trigon1[i]=='O'&&trigon1[i+1]=='-'||trigon1[i]=='H'&&trigon1[i+1]=='-'){
			number2[j]=trigon1[i];
			number2[j+1]=trigon1[i+1];
			j=j+2;i=i+2;
			}
			if(trigon1[i]!='*'&&trigon1[i]!='+'&&trigon1[i]!='-'&&trigon1[i]!='/'&&trigon1[i]!='^'&&trigon1[i]!='='){
			number2[j]=trigon1[i];
			j++;
			}
		else{
			if(trigon1[i]=='*'||trigon1[i]=='+'||trigon1[i]=='-'||trigon1[i]=='/'||trigon1[i]=='^'||trigon1[i]=='='){
			number2[j]='.';
			number2[j+1]='0';
			number2[j+2]='\0';
			int df=j;
			j=0;
			
			if(number2[0]=='_'&&number2[1]!='e'&&number2[1]!='p'){
				for(j=0;number2[j]!='\0';j++){
					number2[j]=number2[j+1];
				}
				if(number2[0]!='0'&&number2[0]!='1'&&number2[0]!='2'&&number2[0]!='3'&&number2[0]!='4'&&number2[0]!='5'&&number2[0]!='6'&&number2[0]!='7'&&number2[0]!='8'&&number2[0]!='9'){
				sign=1;
				for(j=0;number2[j]!='\0';j++){
					if(number2[j]=='.'){
						number2[j]='\0';
					}
				}
				}
			ampl[n]=-1*strtod(number2,&pointer);
			}
			else{ampl[n]=strtod(number2,&pointer);
			}
			number2[df]='\0';
			double var=0;
			if(number2[0]=='f'||number2[0]=='h'||number2[0]=='j'||number2[0]=='k'||number2[0]=='m'||number2[0]=='n'||number2[0]=='o'||number2[0]=='p'||number2[0]=='u'||number2[0]=='w'||number2[0]=='v'||number2[0]=='y'||number2[0]=='z'||number2[0]=='G'||number2[0]=='I'||number2[0]=='J'||number2[0]=='K'||number2[0]=='L'||number2[0]=='M'||number2[0]=='N'||number2[0]=='P'||number2[0]=='Q'||number2[0]=='R'||number2[0]=='S'||number2[0]=='T'||number2[0]=='U'||number2[0]=='V'||number2[0]=='X'||number2[0]=='Y'||number2[0]=='Z'){
			if(var!=0){ampl[n]=var;if(sign==1){sign=0;ampl[n]=ampl[n]*-1;}}}
			
			j=0;
							f=0;
							char ex[DIM]="";
			if(number2[0]=='p'&&number2[1]=='i'){
				ampl[n]=M_PI;
			}
			if(number2[0]=='_'&&number2[1]=='p'&&number2[2]=='i'){
								ampl[n]=(-1)*(M_PI);
							}
			if(number2[0]=='e'){
				ampl[n]=M_E;
			}
			if(number2[0]=='_'&&number2[1]=='e'){
								ampl[n]=(-1)*(M_E);
							}
			if(number2[0]=='r'&&number2[1]=='e'&&number2[2]=='s'||number2[0]=='['&&number2[1]=='r'&&number2[2]=='e'&&number2[3]=='s'){
								ampl[n]=result;
							}
							if(number2[0]=='_'&&number2[1]=='r'&&number2[2]=='e'&&number2[3]=='s'||number2[0]=='['&&number2[1]=='_'&&number2[2]=='r'&&number2[3]=='e'&&number2[4]=='s'){
								ampl[n]=result*(-1);
							}
			amp[n]=trigon1[i];
			n=n+1;
		}
			char number2[DIM]="";
	}
	char trigon1[]="";
	}
	int a=0;
	int fr;
	so=0;
	int ca=0;
	double asdf=0;
	for(so=0;so<n;so++){
		int sa=so;	
		int b=0;
		if(amp[so]=='^'&&amp[so+1]=='^'){
		while(amp[so]=='^'&&a!=1){
			if(amp[so+1]!='^'&&amp[so-1]=='^'&&a!=2){
				asdf=ampl[so+1];
				if(ampl[so]<0){
				sig[so]=0;
				}else{sig[so]=1;}
		
				asdf=pot(ampl[so],asdf,sig[so]);
				ampl[so+1]=0;
				ampl[so]=0;
				amp[so]='+';
				so--;
				a=2;
			}
			else{
				if(amp[so+1]=='^'&&a==0){
					so++;
					fr=so;
				}else{
					if(a==2){
						while(a!=1){
							if(ampl[so]<0){
				sig[so]=0;
				}else{sig[so]=1;}
							
				asdf=pot(ampl[so],asdf,sig[so]);
				ampl[so]=0;
				amp[so]='+';
				so--;
				
		if(amp[so]!='^'){
		a=1;
		so=fr++;
		}
					}
				}
			}
			
			
	} 
		if(a==1){
			ampl[sa]=asdf;a=0;
		}
		
			}
		}else{if(amp[so]=='^'&&amp[so+1]!='^'){
			while(amp[so]=='^'){
				if(ampl[sa]<0){
				sig[sa]=0;
				}else{sig[sa]=1;}
				
				ampl[sa]=pot(ampl[sa],ampl[so+1],sig[sa]);
			ampl[so+1]=0;
			amp[so]='+';
			so++;
			} }
		}
		
	}
	for(so=0;so<n;so++){
		int sa=so;

		while(amp[so]=='/'){
			ampl[sa]=ampl[sa]/ampl[so+1];
			ampl[so+1]=0;
			amp[so]='+';
			so++;
	}
		
		
		while(amp[so]=='*'){
			ampl[sa]=ampl[sa]*ampl[so+1];
			ampl[so+1]=0;
			amp[so]='+';
			so++;
	}
	}
	for(h=0;h<n;h++){
		 if(h==0){
			 result1=ampl[0];
		 }
		 if(amp[h]=='^'){
			result1=pot(result1,ampl[h+1],1);
	}
		 if(amp[h]=='*'){
		result1=result1*ampl[h+1];
		}
		if(amp[h]=='/'){
			result1=result1/ampl[h+1];
		}
		 if(amp[h]=='-'){
		result1=result1-ampl[h+1];
		}
		if(amp[h]=='+'){
			result1=result1+ampl[h+1];
		}
	}
	return result1;
	}

	double pot(double base,double exponent,int sig){
	double result=0,rest=0;
	rest=re(exponent,2);
	if(sig==0){
		base=base*-1;
	result=-1*pow((float)base,(float)exponent);
	return result;
	}
	else{
		if(sig==1){
		result=pow((float)base,(float)exponent);
		return result;
	}
	}
	return result;
}
	double re(double dividend,double divider){
	FILE *open;
	double quotient,qu,res,rest=0;
	char quot[DIM]="",quo[DIM]="";
	char *pointer;
	int i=0;
	open=fopen("calculations.txt","w");
	quotient=dividend/divider;
	fprintf(open,"%f",quotient);
	fclose(open);
	open=fopen("calculations.txt","r");
	fgets(quot,DIM,open);
	fclose(open);
	while(quot[i]!='.'){
		quo[i]=quot[i];
		i++;
	}
	quo[i]='\0';
	qu=strtod(quo,&pointer);
	res=quotient-qu;
	rest=res*divider;
	open=fopen("calculations.txt","w");
	fclose(open);
	return rest;
}